CPU 686
BITS 32

%define EOI 20h
%define PIC1_CMD 20h
%define PIC2_CMD 0xA0
%define DATA_REG 0x60
%define STAT_REG 0x64
%define MASCARA_STAT 0xC0
%define MASCARA_STAT_OK 0x21

global _mouse_isr
global _mouse_dx
global _mouse_dy
global _contador

section .data
;_kbc_mouse_sc1 db 0
_contador db 0
_mouse_dx dd 0
_mouse_dy dd 0

section .bss

section .text

_mouse_isr:
	pusha
	
	;mov EAX, 0
	IN AL, DATA_REG
	movsx eax, al
	
	
	inc byte [_contador]
	cmp byte [_contador], 2 ;Pacote do delta x pronto
	jz delta_x
	cmp byte [_contador], 3 ;Pacote do delta y pronto
	jz delta_y
	jmp fim

delta_x:
	add dword [_mouse_dx], eax
	jmp fim
	
delta_y:
	sub dword [_mouse_dy], eax
	mov byte [_contador], 0
	;call _parse_mouse_event
	;mov byte [contador], 0
	;jmp fim
	
fim:
	
	mov al, EOI
	out PIC2_CMD, al
	mov al, EOI
	out PIC1_CMD, al
	
	popa
	iretd

END
